<?php
/**
 * class Lab8_MyTemplate
 * 自定义模板处理类
 * 
 * @version 1.0
 */
class Lab8_MyTemplate
{
	/**
	 * 存贮视图中要显示的变量
	 * @var Array
	 */
	protected $_props = array();
	
	/**
	 * 模板目录
	 * @var String
	 */
	protected $_templateDir;
	
	/**
	 * @name  __construct()
	 * @desc  构造方法
	 * @param String $templateDir 模板文件目录，默认为“template”目录
	 */
	public function __construct($templateDir = "./templates")
	{
		$this->_templateDir = rtrim($templateDir,"/")."/";
	}
	
	/**
	 * @name   __get()
	 * @desc   魔术方法，获取已设置的视图变量值
	 * @param  String $key 要获取的变量名称
	 * @return multitype:已设置的变量返回变量值|不存在的变量返回boolean false
	 */
	public function __get($key){
		if(isset($this->_props[$key])){
			return $this->_props[$key];
		}
		else{
			return false;
		}
	}
	
	/**
	 * @name  __set
	 * @desc  魔术方法，设置模板视图中要显示的变量
	 * @param String $key 设置的变量名称
	 * @param Mixed $value 设置的值
	 */
	public function __set($key, $value)
	{
		$this->assign($key, $value);
	}
	
	/**
	 * @name  assign()
	 * @desc  为模板变量赋值
	 * @param String $key 设置的变量名称
	 * @param Mixed $value 设置的值
	 */
	public function assign($key, $value)
	{
		if ($key != null) {
			$this->_props[$key] = $value;
		}
	}
	
	public function display($fileName = '')
	{
		//如果没有指定模板文件，则寻找同控制器文件相同名称的模板文件
		if ($fileName == '') {
			$url = $_SERVER['PHP_SELF'];
			$fileName = rtrim(substr($url, strrpos($url, "/")+1), '.php') . '.phtml';
		}
		//开启缓冲区
		ob_start();
		
		$tplFile = $this->_templateDir . $fileName;
		if (!file_exists($tplFile)) {
			echo '模板文件' . $tplFile . '未找到';
			return false;
		}
		include $tplFile;
		echo ob_get_clean();
	}
}
